<template>
  <div class="contarner-page" @click.stop="showLanguageHandel">
    <page-header ref="languageRef"></page-header>
    <main>
      <div class="downloader flex_ccenter" v-if="!success">
        <div class="container">
          <div class="hero-widgets flex_between c-fff">
            <div class="tool-item shou flex_center" @click="changeTab(0)">
              <img src="/static/images/video.svg" alt="savinginsta video" />
              <span class="f-16">Video</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(1)">
              <img src="/static/images/Photo.svg" alt="savinginsta photo" />
              <span class="f-16">Photo</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(2)">
              <img src="/static/images/Reels.svg" alt="savinginsta reels" />
              <span class="f-16">Reels</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(3)">
              <img src="/static/images/Story.svg" alt="savinginsta story" />
              <span class="f-16">Story</span>
            </div>
            <div class="tool-item shou flex_center" @click="changeTab(4)">
              <img src="/static/images/Igtv.svg" alt="savinginsta IGTV" />
              <span class="f-16">IGTV</span>
            </div>
          </div>
          <div class="banner-heading flex_ccenter">
            <div class="heading-item" v-show="current == 0">
              <h1 class="title fw700 f-42 c-fff">Instagram-video downloaden</h1>
              <h2 class="sub c-fff f-18 fw400">
                Download Instagram-video, foto's, rollen, verhalen en IGTV
                Inhoud online
              </h2>
            </div>
            <div class="heading-item" v-show="current == 1">
              <nuxt-link to="/nl/instagram-photo-download">
                <div @click="goToTop('Photo')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram-fotodownloader
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Voer hieronder de Instagram FOTO-URL in
              </p>
            </div>
            <div class="heading-item" v-show="current == 2">
              <nuxt-link to="/nl/instagram-reels-video-download">
                <div @click="goToTop('reels')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Download Instagram-rollen
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Voer hieronder de Instagram Reels-URL in
              </p>
            </div>
            <div class="heading-item" v-show="current == 3">
              <nuxt-link to="/nl/instagram-story-download">
                <div @click="goToTop('story')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Instagram-verhaal downloaden
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Voer hieronder de URL van Instagram Stories in
              </p>
            </div>
            <div class="heading-item" v-show="current == 4">
              <nuxt-link to="/nl/igtv-downloader">
                <div @click="goToTop('igtv')" class="tItem">
                  <h3 class="title fw700 f-42 c-fff shou">
                    Video-IGTV downloaden
                  </h3>
                </div>
              </nuxt-link>
              <p class="sub c-fff f-18 fw400">
                Voer hieronder de Instagram IGTV-URL in
              </p>
            </div>
          </div>
          <div class="form flex_center">
            <div class="input-box flex_between">
              <!-- <input
                type="text"
                class="input f-18"
                v-model="input"
                @input="handleInput"
                @paste="handleInput"
                placeholder="Paste URL Instagram"
                list="fruits"
                name="fruit"
              />
              <datalist id="fruits">
                <option value="Apple"></option>
                <option value="Banana"></option>
                <option value="Cherry"></option>
              </datalist> -->
              <input
                type="text"
                class="input f-18"
                v-model="input"
                :disabled="isHttpLoading"
                @input="handleInput"
                @paste="handleInput"
                @keydown="sendDownload($event)"
                placeholder="Paste URL Instagram"
              />
              <div
                class="Paste shou flex_center"
                @click="handleClickPasted"
                v-if="input == ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Paste</div>
              </div>
              <div
                class="clear shou flex_center"
                v-if="input != '' && !isHttpLoading"
                @click.stop="input = ''"
              >
                <div class="btnbg"></div>
                <div class="f-16 c-000 fw700">Clear</div>
              </div>
            </div>
            <div
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
              class="submit shou fw700 c-fff flex_center"
            >
              Download
            </div>
            <div v-else class="submit shou fw700 c-fff flex_center">
              Please wait
            </div>
          </div>
          <div class="app-submit flex_ccenter">
            <div
              class="submit flex_center"
              v-if="!isHttpLoading"
              @click.stop="downloadHandel"
            >
              <div class="fw700 c-fff f-21">Download</div>
            </div>
            <div class="submit flex_center" v-else>
              <div class="fw700 c-fff f-21">Please wait</div>
            </div>
          </div>
          <div class="loading" v-if="isHttpLoading">
            <div class="loading-dots flex_center">
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
              <div class="dot"></div>
            </div>
            <div class="tips f-18 flex_center">
              <div>
                Gegevens worden opgehaald, een paar seconden geduld a.u.b.!
              </div>
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError1">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              De site kan uw link niet verwerken omdat deze privé is
            </div>
          </div>
          <div class="error flex_ccenter" v-if="httpError2">
            <div class="hono flex_">
              <div class="error-img"></div>
              <div class="error-img"></div>
              <div class="error-img"></div>
            </div>
            <div class="errMsg f-18">
              De door u ingevulde gegevens zijn geen link. Voer een geldige link
              in, voor voorbeeld:
              <div>https://www.instagram.com/reel/Cml9qu-ISqx</div>
            </div>
          </div>
        </div>
      </div>
      <!-- 广告位start -->
      <!-- 广告位end -->
      <div class="container" v-if="!success">
        <div class="body-content">
          <div class="title-box">
            <h3 class="title f-36 c-000 italic">
              Alle functies van Savinginsta.Com
            </h3>
            <p class="sub f-16 c-ccc">
              Savinginsta is compatibel met alle soorten Instagram-video en
              afbeeldingslinks.
            </p>
          </div>
          <div class="list-tools-pc">
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/nl">
                  <div @click="goToTop('video')" class="tItem">
                    <h4>Instagram-video-downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Savinginsta is zo ontworpen dat u uw eigen bestand kunt
                  downloaden inhoud van Instagram. Het biedt ondersteuning voor
                  het downloaden van beide individuele en meerdere video's van
                  Insta.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  src="/static/images/instagram-video-downloader.webp"
                  alt="Instagram video downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  src="/static/images/instagram-video-downloader-app.webp"
                  alt="Instagram video downloader"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/nl/instagram-photo-download">
                  <div @click="goToTop('Photo')" class="tItem">
                    <h4>Instagram-foto-downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Het opslaan van de Instagram Photo Downloader van Insta maakt
                  het moeiteloos om enkele of meerdere foto's op te slaan,
                  inclusief collages, van Instagram. Met deze tool kunt u
                  individuele berichten downloaden afbeeldingen of een
                  verzameling Instagram-foto's is eenvoudig en rechtdoorzee.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader.webp"
                  alt="Instagram photo downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-photo-downloader-app.webp"
                  alt="Instagram photo downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/nl/instagram-reels-video-download">
                  <div @click="goToTop('reels')" class="tItem">
                    <h4>Download Instagram-rollen</h4>
                  </div>
                </nuxt-link>
                <p>
                  Met de Instagram Reels Downloader van Savinginsta kunt u dat
                  doen download moeiteloos Reels-video's van Instagram-posts
                  naar uw apparaat en biedt een eenvoudige oplossing voor
                  Instagram zelf biedt geen ondersteuning voor deze functie.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels.webp"
                  alt="Download Instagram Reels"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/download-instagram-reels-app.webp"
                  alt="Download Instagram Reels"
                />
              </div>
            </div>
            <div class="tool-box tool-reverse flex_between">
              <div class="tool-info">
                <nuxt-link to="/nl/igtv-downloader">
                  <div @click="goToTop('igtv')" class="tItem">
                    <h4>IGTV-downloader</h4>
                  </div>
                </nuxt-link>
                <p>
                  Instagram-verhalen bieden gebruikers een onderscheidend
                  platform deel hun dagelijkse ervaringen via foto's en video's
                  met a breed publiek. Soms wilt u misschien een favoriet
                  opslaan verhaal, maar deze functionaliteit is niet beschikbaar
                  in de app. Savinginsta pakt dit probleem aan door een
                  oplossing te bieden stelt gebruikers in staat eenvoudig
                  Instagram-verhalen te downloaden en te bekijken offline, zodat
                  gedenkwaardige inhoud nooit verloren gaat.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader.webp"
                  alt="IGTV downloader"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/igtv-downloader-app.webp"
                  alt="IGTV downloader"
                />
              </div>
            </div>
            <div class="tool-box flex_between">
              <div class="tool-info">
                <nuxt-link to="/nl/instagram-story-download">
                  <div @click="goToTop('story')" class="tItem">
                    <h4>Instagram-verhaalviewer</h4>
                  </div>
                </nuxt-link>
                <p>
                  IGTV biedt video's van langere lengte, en als je dat niet kunt
                  bekijk ze direct, u heeft de mogelijkheid deze te downloaden
                  IGTV-video's naar uw pc. Hierdoor kunt u gemakkelijk bekijk ze
                  opnieuw en geniet er later van, zelfs zonder internet
                  verbinding, en elimineert zorgen over de IGTV-inhoud
                  verwijderd of niet beschikbaar.
                </p>
              </div>
              <div class="tool-thumb">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download.webp"
                  alt="Instagram Story Download"
                />
              </div>
              <div class="tool-thumb-app">
                <img
                  loading="lazy"
                  src="/static/images/instagram-story-download-app.webp"
                  alt="Instagram Story Download"
                />
              </div>
            </div>
          </div>
          <div class="app-box">
            <div class="app-box__info">
              <h3 class="app-box__title f-21 fw700 c-000">
                Downloaden met app Insta Downloader
              </h3>
              <p class="f-16 c-ccc">
                Onze app biedt een snelle en eenvoudige oplossing voor het
                downloaden Instagram-video's, die video's van HD-kwaliteit
                bieden zonder watermerken.
              </p>
            </div>
            <div class="app-link">
              <a 
                  target="_blank" href="https://play.google.com/store/apps/details?id=ins.freevideodownload.pro">
                <img src="/static/images/google-play.webp" alt="Download app " />
              </a>
              <a href="https://apps.apple.com/us/app/repost-for-video-save-story/id6462401460"  target="_blank">
                <img src="/static/images/IOS.webp" alt="Download app " />
              </a>
            </div>
          </div>
          <div class="quick-info">
            <h3 class="f-32 c-000">
              SAVINGINSTA - BESTE TOOL INSTAGRAM DOWNLOADER
            </h3>
            <p class="f-16 c-ccc">
              Savinginsta onderscheidt zich als een eersteklas
              Instagram-downloader, vakkundig gemaakt om snel inhoud van hoge
              kwaliteit te downloaden Instagram. Bij het zoeken naar de meest
              effectieve downloadmethode Instagram-media, Savinginsta-downloader
              komt naar voren als toonaangevend oplossing van derden.
            </p>
            <p class="f-16 c-ccc">
              Instagram, bekend als 's werelds populairste app voor het delen
              van foto's, is getuige van het dagelijks uploaden van miljoenen
              foto's. Voor dergelijke momenten wordt de noodzaak van een
              Instagram-video-downloader duidelijk, waardoor een naadloze
              oplossing wordt geboden voor uw onmiddellijke behoeften. Deze tool
              is essentieel voor iedereen die zijn of haar eigendommen wil
              behouden favoriete Instagram-inhoud efficiënt.
            </p>
          </div>
          <div class="features c-fff">
            <h3 class="h3 fw700 f-21">
              Kenmerken van Savinginsta Instagram video-downloader:
            </h3>
            <div class="attributes-list flex_between">
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Instagram-video Download Snel, gemakkelijk en veilig.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Je kunt uitloggen bij je Instagram-account.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Met slechts één klik op de knop kun je Instagram-afbeeldingen
                  downloaden en video's.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Download en bewaar afbeeldingen en video's in hun
                  oorspronkelijke hoge resolutie definitie en kwaliteit.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Download en bewaar Instagram-video's vanaf persoonlijke
                  accounts.
                </div>
              </div>
              <div class="item flex_">
                <div class="bgimg"></div>
                <div class="f-14 c-fff">
                  Hoge snelheid: vanaf nu biedt Savinginsta de snelste
                  downloadsnelheden.
                </div>
              </div>
            </div>
          </div>
          <div class="how">
            <div class="how-title">
              <h3 class="f-36 c-000 italic">
                Hoe Savinginsta Instagram Downloader te gebruiken om op te slaan
                van IG
              </h3>
              <div class="note c-ccc f-16">
                Let op: Zorg ervoor dat de Instagram-video of -foto die je wilt
                bekijken downloaden is van een openbaar account.
              </div>
            </div>
            <div class="steps">
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Stap01:</span>
                  <span class="f-16 c-000"
                    >Kopieer de URL van Instagram-foto's en -video's</span
                  >
                </div>
                <div class="app-step">
                  <div class="fw700 c-000 f-16">In de Instagram-app:</div>
                  <div class="c-000 f-16">
                    Voor iOS: Tik om de URL van de Instagram-foto op te halen.
                  </div>
                  <div class="c-000 f-16">
                    Voor Android: klik boven het bericht en selecteer 'Kopieer
                    het Instagram-URL' en klik vervolgens op 'Kopieer deel-URL'.
                    De koppeling zal zijn naar uw klembord gekopieerd.
                  </div>
                  <div class="fw700 c-000 f-16">- Op pc/Mac:</div>
                  <div class="c-000 f-16">
                    Klik met de rechtermuisknop op de datum van de
                    Instagram-video of -foto en selecteer "Kopieer linkadres" om
                    Instagram-inhoud te downloaden uw bureaublad.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Stap02:</span>
                  <span class="f-16 c-000">
                    Plak de URL in Savinginsta.App</span
                  >
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Navigeer naar de Savinginsta.App - de speciale Instagram
                    downloader.
                  </div>
                  <div class="c-000 f-16">
                    Kopieer en plak de gekopieerde URL in het opgegeven
                    tekstveld.
                  </div>
                </div>
              </div>
              <div class="step">
                <div class="one">
                  <span class="fw700 c-blue f-16">Stap03:</span>
                  <span class="f-16 c-000">Start het downloaden</span>
                </div>
                <div class="app-step">
                  <div class="c-000 f-16">
                    Klik op de knop "Downloaden" om de Instagram-video te
                    starten of foto downloadproces.
                  </div>
                  <div class="fw700 c-000 f-16">
                    Belangrijke gebruiksinformatie
                  </div>
                  <div class="c-000 f-16">
                    Savinginsta is voornamelijk ontworpen voor het downloaden
                    van video's en afbeeldingen van je eigen Instagram-account.
                  </div>
                  <div class="c-000 f-16">
                    Wij geven prioriteit aan de privacy van gebruikers en
                    behouden ons het recht voor om te weigeren service als onze
                    tools worden gebruikt om inbreuk te maken op de privacy of
                    om toegang te krijgen tot ongeautoriseerd materiaal.
                  </div>
                </div>
              </div>
            </div>
            <div class="user-note f-16">
              <div class="app-tip"></div>
              Voor een uitgebreid begrip van ons beleid

              <a class="fw700 c-blue" href="/terms-of-service">
                Lees hier onze volledige Servicevoorwaarden.</a
              >
            </div>
          </div>
          <div class="faq-section">
            <h3 class="faq-title f-36 c-000 italic">FAQ</h3>
            <div class="accordion">
              <div
                id="faq"
                itemscope="itemscope"
                itemtype="https://schema.org/FAQPage"
              >
                <div
                  itemprop="mainEntity"
                  itemscope="itemscope"
                  itemtype="https://schema.org/Question"
                  class="accordion-item"
                  :key="k"
                  v-for="(item, k) in faqList"
                >
                  <h4 itemprop="name" class="accordion-title fw700 f-16">
                    {{ item.title }}
                  </h4>
                  <div
                    itemprop="acceptedAnswer"
                    itemscope=""
                    itemtype="https://schema.org/Answer"
                  >
                    <div
                      itemprop="text"
                      class="accordion-text f-16 c-ccc fw400"
                    >
                      {{ item.content }}
                    </div>
                  </div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
      <!-- 解析结果 start -->
      <div class="container" v-if="success">
        <success-content
          @refresh="refresh"
          :list="successList"
        ></success-content>
      </div>
      <!-- 解析结果 end -->
    </main>
    <footer>
      <div class="container">
        <div class="footer-content">
          <div class="footer-link">
            <div class="row flex_between">
              <div class="col-12">
                <div class="link-label fw700 c-000 f-21">Hulpmiddelen</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li @click="goToTools('story')">
                    <nuxt-link to="/nl/instagram-story-download"
                      >Instagram-verhaaldownloader</nuxt-link
                    >
                  </li>
                  <li @click="goToTools('reels')">
                    <nuxt-link to="/nl/instagram-reels-video-download"
                      >Instagram Reels-downloader</nuxt-link
                    >
                  </li>
                  <li>
                    <a href="https://savingtik.com/" target="_blank"
                      >Tiktok-downloader</a
                    >
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Steun</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/contact"> Contact </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/blog"> Blog </nuxt-link>
                  </li>
                </ul>
              </div>
              <div class="col-6">
                <div class="link-label fw700 c-000 f-21">Legaal</div>
                <ul class="list-unstyled c-ccc f-16">
                  <li>
                    <nuxt-link to="/terms-of-service">
                      Servicevoorwaarden
                    </nuxt-link>
                  </li>
                  <li>
                    <nuxt-link to="/privacy-policy"> Privacybeleid </nuxt-link>
                  </li>
                </ul>
              </div>
            </div>
          </div>
          <div class="copyright flex_ccenter">
            <b class="fw700 f-21 c-000"
              >Wij zijn niet aangesloten bij Instagram of Meta</b
            >
            <div class="c-ccc f-16">
              © {{new Date().getFullYear()}} Insta Downloader All rights reserved.
            </div>
          </div>
        </div>
      </div>
    </footer>
  </div>
</template>

<script>
import { mapState, mapGetters, mapMutations } from "vuex";
import pageHeader from "~/components/page-header.vue";
import SuccessContent from "~/components/success-content.vue";
import CryptoJS from "crypto-js";
import { handleClick, checkString } from "@/plugins/Firebase.js";

export default {
  components: { pageHeader, SuccessContent },
  name: "IndexPage",
  head: {
    htmlAttrs: {
      lang: "nl",
    },
    bodyAttrs: {
      "data-lang": "nl",
    },
    title:
      "Instagram Downloader - Download Instagram-video online - Saveinsta",
    meta: [
      { property: "og:locale", content: "nl" },
      //Page Information
      {
        name: "description",
        content:
          "Savinginsta: download eenvoudig Instagram-video's, -rollen en -foto's met onze gebruiksvriendelijke tool. Bewaar je Instagram-video's snel en veilig op elk apparaat.",
      },
      //Schema.org Microdata
      {
        itemprop: "name",
        content:
          "Instagram Downloader - Download Instagram-video online - Saveinsta",
      },

      // Facebook / OpenGraph
      {
        property: "og:title",
        content:
          "Instagram Downloader - Download Instagram-video online - Saveinsta",
      },
      { property: "og:type", content: "website" },
      { property: "og:url", content: "https://savinginsta.com/nl" },

      {
        property: "og:description",
        content:
          "Savinginsta: download eenvoudig Instagram-video's, -rollen en -foto's met onze gebruiksvriendelijke tool. Bewaar je Instagram-video's snel en veilig op elk apparaat.",
      },
      //Twitter
      { name: "twitter:card", content: "summary" },
      { name: "twitter:url", content: "https://savinginsta.com/nl" },
      {
        name: "twitter:title",
        content:
          "Instagram Downloader - Download Instagram-video online - Saveinsta",
      },
      {
        name: "twitter:description",
        content:
          "Savinginsta: download eenvoudig Instagram-video's, -rollen en -foto's met onze gebruiksvriendelijke tool. Bewaar je Instagram-video's snel en veilig op elk apparaat.",
      },
      //multilingual
      {
        name: "google",
        content: "notranslate",
      },
      {
        itemprop: "image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        property: "og:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
      {
        name: "twitter:image",
        content: "https://savinginsta.com/static/images/savinginsta_thumbnail.jpg",
      },
    ],
    link: [
      //multilingual
      {
        rel: "alternate",
        hreflang: "x-default",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "en",
        href: "https://savinginsta.com/",
      },
      {
        rel: "alternate",
        hreflang: "en-in",
        href: "https://savinginsta.com/in",
      },
      {
        rel: "alternate",
        hreflang: "vi",
        href: "https://savinginsta.com/vn",
      },
      {
        rel: "alternate",
        hreflang: "tr",
        href: "https://savinginsta.com/tr",
      },
      {
        rel: "alternate",
        hreflang: "id",
        href: "https://savinginsta.com/id",
      },
      {
        rel: "alternate",
        hreflang: "fr",
        href: "https://savinginsta.com/fr",
      },
      {
        rel: "alternate",
        hreflang: "pt",
        href: "https://savinginsta.com/pt",
      },
      {
        rel: "alternate",
        hreflang: "ru",
        href: "https://savinginsta.com/ru",
      },
      {
        rel: "alternate",
        hreflang: "es",
        href: "https://savinginsta.com/es",
      },
      {
        rel: "alternate",
        hreflang: "ms",
        href: "https://savinginsta.com/ms",
      },
      {
        rel: "alternate",
        hreflang: "ko",
        href: "https://savinginsta.com/ko",
      },
      {
        rel: "alternate",
        hreflang: "ja",
        href: "https://savinginsta.com/ja",
      },
      {
        rel: "alternate",
        hreflang: "jv",
        href: "https://savinginsta.com/jv",
      },
      {
        rel: "alternate",
        hreflang: "cs",
        href: "https://savinginsta.com/cs",
      },
      {
        rel: "alternate",
        hreflang: "de",
        href: "https://savinginsta.com/de",
      },
      {
        rel: "alternate",
        hreflang: "it",
        href: "https://savinginsta.com/it",
      },
      {
        rel: "alternate",
        hreflang: "pl",
        href: "https://savinginsta.com/pl",
      },
      {
        rel: "alternate",
        hreflang: "hu",
        href: "https://savinginsta.com/hu",
      },
      {
        rel: "alternate",
        hreflang: "nl",
        href: "https://savinginsta.com/nl",
      },
      {
        rel: "alternate",
        hreflang: "ro",
        href: "https://savinginsta.com/ro",
      },
      {
        rel: "alternate",
        hreflang: "el",
        href: "https://savinginsta.com/el",
      },
      {
        rel: "canonical",
        href: "https://savinginsta.com/nl",
      },
    ],
    script: [
      {
        json: {
          "@context": "https://schema.org",
          "@type": "WebSite",
          name: "Instagram Downloader - Download Instagram-video online - Saveinsta",
          url: "https://savinginsta.com",
          description:
            "Savinginsta: download eenvoudig Instagram-video's, -rollen en -foto's met onze gebruiksvriendelijke tool. Bewaar je Instagram-video's snel en veilig op elk apparaat.",
          publisher: {
            "@type": "Organization",
            name: "Savinginsta",
            logo: {
              "@type": "ImageObject",
              url: "https://savinginsta.com/static/images/logo.webp",
            },
          },
        },
        type: "application/ld+json",
      },
    ],
  },
  data() {
    return {
      input: "",
      success: false,
      isHttpLoading: false,
      httpError1: false,
      httpError2: false,
      current: 0,
      successList: [],
      faqList: [
        {
          title: `Wat is een Instagram-video-downloader?`,
          content: `Een Instagram Video Downloader is een webgebaseerde tool die is ontworpen voor het opslaan van Instagram-foto's, video's en IGTV-inhoud voor later gebruik. Savinginsta onderscheidt zich als een topkeuze voor het moeiteloos downloaden van inhoud van Instagram.`,
        },
        {
          title: `Is inloggen op mijn Instagram-account nodig om Savinginsta te gebruiken?`,
          content: `Nee, je hoeft niet in te loggen op je Instagram-account. Savinginsta zorgt voor veilige en anonieme downloads van Instagram zonder dat er persoonlijke gegevens nodig zijn.`,
        },
        {
          title: `Kan ik video's rechtstreeks van Instagram opslaan?`,
          content: `Het rechtstreeks downloaden van video's uit je Instagram-feed of de verhalen van anderen is niet mogelijk via Instagram zelf. Savinginsta biedt echter een eenvoudige oplossing. Bezoek gewoon hun website op https:// savinginsta.com en volg de eenvoudige instructies.`,
        },
        {
          title: `Is de Instagram video- en fotodownloadservice gratis?`,
          content: `Ja, Savinginsta biedt deze service volledig gratis aan, zonder beperkingen op het aantal downloads.`,
        },
        {
          title: `Kan ik inhoud downloaden van privé Instagram-accounts?`,
          content: `Met Savinginsta kun je inderdaad video's, verhalen en foto's downloaden van privé Instagram-accounts. Gedetailleerde instructies zijn beschikbaar op hun platform.`,
        },
        {
          title: `Is het mogelijk om Instagramverhalen op te slaan?`,
          content: `Absoluut. Met Savinginsta kun je elk Instagram-verhaal bekijken en downloaden. Klik eenvoudig op de drie stippen (⁝) in het verhaal, kopieer de link en plak deze in Savinginsta om het downloaden te starten.`,
        },
        {
          title: `Ondersteunt Savinginsta downloads op computers?`,
          content: `Ja, Savinginsta is volledig compatibel met pc's, waardoor je Instagram-video's, foto's, verhalen en meer rechtstreeks naar je computer kunt downloaden.`,
        },
        {
          title: `Kan ik Savinginsta gebruiken om te downloaden van Instagram op Android-apparaten?`,
          content: `Zeker. Voor Android-gebruikers: kopieer eenvoudigweg de link naar het Instagram-bericht, plak deze in Savinginsta en sla op. Bezoek voor meer informatie hun gids over downloaden van Instagram op Android.`,
        },
        {
          title: `Hoe kan ik Instagram-video's en foto's downloaden op iPhone/iPad (iOS)?`,
          content: `Savinginsta heeft een gebruiksvriendelijke, stapsgewijze handleiding gemaakt voor het downloaden van verschillende soorten video's naar uw iPhone of iPad. Volg deze link voor instructies: Download Instagram-video's op iPhone.`,
        },
        {
          title: `Wat als de Instagram-video wordt afgespeeld in plaats van te downloaden?`,
          content: `Om dit op te lossen, klikt u met de rechtermuisknop op de video en selecteert u 'Opslaan als...' om de gewenste opslaglocatie te kiezen, in plaats van met de linkermuisknop te klikken.`,
        },
        {
          title: `Waar worden video's opgeslagen na het downloaden?`,
          content: `Gedownloade video's worden doorgaans opgeslagen in de map 'Downloads' op zowel mobiele Android-apparaten als pc's.`,
        },
      ],
    };
  },
  computed: {
    ...mapGetters(["language"]),
  },
  mounted() {
    this.debouncedDownInput = this.debounce(this.downInput, 1000);
    //到达首页
    handleClick("guide_homepage_frist", {});
    handleClick("guide_homepage", {});
  },
  methods: {
    async downloadHandel() {
      if (this.isHttpLoading || this.input === "") return;
      this.isHttpLoading = false;
      this.httpError1 = false;
      this.httpError2 = false;
      this.input = this.input.replace(/^.*\s?https:\/\//, "https://");
      const insUrlPattern = new RegExp("^http(s|)://.*instagram.com.*/.*$");
      let type = checkString(this.input);
      if (!insUrlPattern.test(this.input)) {
        //点击解析下载按钮
        handleClick("action_ins_detect_boinsom", {
          site: "other",
          noislink: this.input,
          from: "video",
          type: type,
        });
        this.httpError2 = true;
        this.isHttpLoading = false;
        return;
      }
      //点击解析下载按钮
      handleClick("action_ins_detect_boinsom", {
        site: "other",
        from: "video",
        type: type,
      });
      //开始解析  ins_start_resolve
      handleClick("ins_start_resolve", {
        islink: this.input,
        from: "video",
        type: type,
      });
      this.isHttpLoading = true;
      try {
        let result = this.uki(this.input);
        const response = await fetch(
          "https://savinginsta.com/api/downloader/analysis",
          {
            method: "POST",
            headers: { "Content-Type": "application/json" },
            body: JSON.stringify({
              path: result,
            }),
          }
        );
        let encryptedResponse = await response.text();
        let parse = JSON.parse(encryptedResponse);
        if (parse.code != 200) {
          // 解析失败  ins_resolve_fail
          handleClick("ins_resolve_fail", {
            reason: "Failed to fetch",
            islink: this.input,
            from: "video",
            type: type,
          });
          this.httpError1 = true;
          this.isHttpLoading = false;
          return;
        } else {
          //解析成功  ins_resolve_success
          handleClick("ins_resolve_success", {
            type: type,
            from: "video",
          });
          let decryptedResponse = await this.eki(parse.data); // 使用你的解密函数
          this.successList = JSON.parse(decryptedResponse);
          this.success = true;
          this.isHttpLoading = false;
        }
      } catch (error) {
        // 解析失败  ins_resolve_fail
        handleClick("ins_resolve_fail", {
          reason: "Failed to fetch",
          islink: this.input,
          from: "video",
          type: type,
        });
        console.error(error);
        this.httpError1 = true;
        this.isHttpLoading = false;
      }
    },

    uki(input) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      
  try {
        const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
        const keyBytes = CryptoJS.enc.Utf8.parse(complexKey);
        const inputBytes = CryptoJS.enc.Utf8.parse(input);
        const ivBytes = CryptoJS.lib.WordArray.random(IV_SIZE);
        const encrypted = CryptoJS.DES.encrypt(inputBytes, keyBytes, {
          iv: ivBytes,
          mode: CryptoJS.mode.CBC,
          padding: CryptoJS.pad.Pkcs7,
        });
        const ciphertext = ivBytes.concat(encrypted.ciphertext);
        return ciphertext.toString();
      } catch (error) {
        console.error(error);
        return null;
      }
    },
    eki(cipherText) {
      let CIPHER_ALGORITHM = "DES-CBC";
      let IV_SIZE = 8;
       
      const complexKey = [
          process.env.part1,
          process.env.part2,
          process.env.part3,
          process.env.part4,
          process.env.part5,
          process.env.part6,
          process.env.part7,
          process.env.part8,
        ].join("");
      try {
        let keyBytes = CryptoJS.enc.Utf8.parse(
          complexKey.padEnd(CIPHER_ALGORITHM === "DES-CBC" ? 8 : 16)
        );
        let ivBytes = { iv: CryptoJS.enc.Hex.parse(process.env.DES_IV) }; // 如果使用CBC模式，需要一个初始化向量iv，这里是空向量
        let decrypted = CryptoJS.DES.decrypt(
          { ciphertext: CryptoJS.enc.Hex.parse(cipherText) },
          keyBytes,
          ivBytes
        );
        return decrypted.toString(CryptoJS.enc.Utf8);
      } catch (e) {
        console.error(e);
        return null;
      }
    },
    sendDownload(event) {
      if (event.keyCode === 13 && !this.isHttpLoading) {
        this.downloadHandel();
        event.preventDefault();
        return false;
      }
    },
    changeTab(k) {
      this.current = k;
    },
    handleInput(e) {
      this.debouncedDownInput(e);
    },
    debounce(fn, delay) {
      let timer;
      return function () {
        let context = this;
        let args = arguments;
        clearTimeout(timer);
        timer = setTimeout(() => {
          fn.apply(context, args);
        }, delay);
      };
    },

    downInput(e) {
      let type = checkString(e.target.value);
      // 粘贴链接到输入框 action_ins_paste
      handleClick("action_ins_paste", {
        islink: e.target.value,
        from: "photo",
        type: type,
      });
    },
    handleClickPasted() {
      if (!navigator.clipboard) {
        console.log("Clipboard API not available");
        return;
      }
      navigator.clipboard
        .readText()
        .then((text) => {
          this.input = text;
          let type = checkString(text);
          // 粘贴链接到输入框 action_ins_paste
          handleClick("action_ins_paste", {
            islink: text,
            from: "photo",
            type: type,
          });
        })
        .catch((err) => {
          console.error("Failed to read clipboard contents: ", err);
        });
    },
    showLanguageHandel() {
      this.$refs.languageRef.close();
    },
    refresh() {
      this.success = false;
      this.input = "";
      this.successList = [];
    },
    goToTop(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: top,
      });
    },
    goToTools(site) {
      //切换页面
      handleClick("action_page_switch", {
        site: site,
        from: tools,
      });
    },
  },
};
</script>
<style lang="scss" scoped>
 @import "@/static/style/index.css";
.loading {
  .loading-dots {
    position: relative;
    z-index: 999;
    margin-top: 70px;
  }

  .dot {
    background-color: #ffffff;
    width: 12px;
    height: 12px;
    border-radius: 50%;
    margin: 0 10px;
    animation: loading-animation 1.5s infinite;
  }

  .dot:nth-child(2) {
    animation-delay: 0.5s;
  }

  .dot:nth-child(3) {
    animation-delay: 0.8s;
  }
  .dot:nth-child(4) {
    animation-delay: 1s;
  }
}
@keyframes loading-animation {
  0%,
  50%,
  80%,
  100% {
    transform: scale(1);
  }
  40% {
    transform: scale(1.5);
  }
}
@media (max-width: 768px) {
  .loading {
    .loading-dots {
      margin-top: 26px !important;
    }
    .dot {
      width: 8px !important;
      height: 8px !important;
    }
  }
}
</style>
